<?php
// 应用公共文件
use think\response\Json;

/**
 * 统一响应包装函数
 * @param $code
 * @param int $errorCode
 * @param $data
 * @param string $msg
 * @return Json
 */
function writeJson($code, $data, string $msg = 'ok', int $errorCode = 200000): Json
{
    $data = [
        'code' => $errorCode,
        'result' => $data,
        'message' => $msg
    ];
    return json($data, $code);
}

/**
 * 根据当前时间过滤无效的配送时间段
 * @param array $deliveryTimes 原始配送时间数组
 * @return array 过滤后的配送时间数组
 */
function filterDeliveryTimes($deliveryTimes) {
    // 获取当前时间的小时数
    $currentHour = date('H');

    // 遍历数组并过滤
    $filtered =  array_filter($deliveryTimes, function($item) use ($currentHour) {
        // id为0的"尽快送达"始终保留
        if ($item['id'] == 0) {
            return true;
        }

        // 根据id判断时间段并决定是否保留
        switch ($item['id']) {
            case 1: // 上午9:00-12:00
                return $currentHour < 9;
            case 2: // 中午12:00-15:00
                return $currentHour < 12;
            case 3: // 下午15:00-18:00
                return $currentHour < 15;
            case 4: // 晚上18:00-22:00
                return $currentHour < 18;
            default:
                return true;
        }
    });

    // 重新索引数组
    return array_values($filtered);
}

/**
 * 获取随机长度的字符串
 * @param $length
 * @return string|null
 */
function getRandChar($length)
{
    $str = null;
    $strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
    $max = strlen($strPol) - 1;

    for ($i = 0;
         $i < $length;
         $i++) {
        $str .= $strPol[rand(0, $max)];
    }

    return $str;
}
